#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main()
{
    pid_t id=fork();
    int status;
    if(id==0)
    {
        //child
        printf("我是一个子进程，我的PID为 %d，父进程PID为 %d\n",getpid(),getppid());
        sleep(5);
        exit(2);
    }
    else if(id>0)
    {
        //parent
        //等待回收子进程
        pid_t ret=waitpid(id,&status,0);
        if(ret>0)
        {
            printf("wait success! exitcode->%d\n",status);
        }
    }
    else
    {
        printf("fork fail!\n");
    }
    return 0;
}
















//#include<stdio.h>
//#include<stdlib.h>
//#include<unistd.h>
//#include<sys/types.h>
//#include<sys/wait.h>
//#include<string.h>
//#include<error.h>
//#define N 3
//int main()
//{
//    pid_t arr[N];
//    int status;
//    for(int i=0;i<N;i++)
//    {
//        //创建N个子进程
//        arr[i]=fork();
//        if(arr[i]==0)
//        {
//            //child:
//            printf("我是一个子进程，我的PID是：%d，我的父进程PID是 %d\n"
//                   ,getpid(),getppid());
//            sleep(1);
//            exit(i);
//        }
//    }
//    //父进程等待所有子进程终止;
//    for(int i=0;i<N;i++)
//    {
//        pid_t ret=waitpid(arr[i],&status,0);
//        if(ret>0)
//        {
//            printf("wait %d success\n",arr[i]);
//        }
//        else
//        {
//            printf("wait fail!");
//        }
//    }
//    return 0;
//}
